# coding: utf8

import pygame

# gera os tipos de objetos padrão do jogo
class Objeto (pygame.sprite.Sprite):
    '''Define um tipo padrão para objetos de ação do jogo 
        Uso: Objeto(imagem, posx, posy, velx, vely) 
        -- velx e vely tem valores padrão 0 (pixels)
        -- Carrega a imagem do objeto, posiciona na tela e define
        a velocidade para uso no método mover_se()'''
    def __init__ (self, imagem1, x, y, velx = 0, vely = 0):
        pygame.sprite.Sprite.__init__(self)
        self.imagem = pygame.image.load(imagem1)
        self.rect = self.imagem.get_rect()
        self.rect.center = [x,y]
        self.velocidade = [velx,vely]
    def mover_se (self):
        '''Objeto.mover_se() -> Faz o objeto se mover pela tela
            Deve ser chamado a cada quadro do jogo para movimentos
            constantes '''
        self.rect.move_ip(self.velocidade)

class ObjetoAnimado (Objeto):
    '''Define o tipo objeto de ação animado com duas imagens
        Uso: ObjetoAnimado(imagem1, imagem2, posx, posy, velx, vely)
        -- velx e vely tem valores padrão 0 (pixels)
        -- Carrega as imagems do objeto para o método animar(), posiciona na tela
         e define a velocidade para uso no método mover_se()'''
    def __init__ (self, imagem1, imagem2, x, y,  velx = 0, vely = 0):
        Objeto.__init__(self, imagem1, x, y, velx, vely)
        self.imagem2 = pygame.image.load(imagem2)
    def animar (self):
        '''ObjetoAnimado.animar() -> Troca a imagem para exibição na tela
            (Quando chamado a cada quadro gera um efeito de animação)'''
        self.imagem, self.imagem2 = self.imagem2, self.imagem

class Imagem:
    ''' Carrega uma imagem para o jogo
            Uso: Imagem(imagem)
        (Usado para carregar imagens de fundo)'''
    def __init__(self, fundo): # Imagem de fundo
        self.imagem = pygame.image.load(fundo)